class Solution:
    def romanToInt(self, s: str) -> int:
        Roman2Int = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
        Int = 0
        n = len(s)
        for index in range(n - 1):
            if Roman2Int[s[index]] < Roman2Int[s[index + 1]]:
                Int -= Roman2Int[s[index]]
            else:
                Int += Roman2Int[s[index]]
        return Int + Roman2Int[s[-1]]
'''
举个例子，遍历经过 IVIV 的时候先记录 II 的对应值 11 再往前移动一步记录 IVIV 的值 33，
加起来正好是 IVIV 的真实值 44。max 函数在这里是为了防止遍历第一个字符的时候出现 [-1:0][−1:0] 的情况
'''
class Solution:
    def romanToInt(self, s: str) -> int:
        dict = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
        res = 0
        n = len(s)
        for i in range(n-1):
            if dict[s[i]] < dict[s[i+1]]:
                res -=dict[s[i]]
            else:
                res +=dict[s[i]]
        return res + dict[s[-1]]

class Solution:
    def romanToInt(self, s: str) -> int:
        dict = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
        res = 0
        n = len(s)
        for i in range(n-1):
            if dict[s[i]]>=dict[s[i+1]]:
                res += dict[s[i]]
            else:
                res -= dict[s[i]]
        return res + dict[s[-1]]
'''
罗马数字就是前一个数比后一个数小，数值就减去这个小的，不然就加上大的，
最后一位一定是加上去的，单独写
'''